// login.js
Page({
  data: {
    loading: false,
    loginMessage: '登录后继续操作',
    redirectUrl: '',  // 登录后重定向的页面
    userAvatar: null, // 用户头像
    hasUserInfo: false, // 是否已获取用户信息
    hasAgreed: false  // 是否同意协议
  },
  
  onLoad: function(options) {
    // 获取重定向页面
    if (options.redirect) {
      this.setData({
        redirectUrl: decodeURIComponent(options.redirect)
      });
    }
    
    // 如果已经登录，直接跳转回原页面或首页
    const app = getApp();
    if (app.globalData.userInfo) {
      this.navigateBack();
    }
  },
  
  // 勾选或取消协议
  toggleAgreement: function() {
    this.setData({
      hasAgreed: !this.data.hasAgreed
    });
  },
  
  // 打开协议页面
  openAgreement: function(e) {
    const type = e.currentTarget.dataset.type;
    const app = getApp();
    const baseUrl = app.globalData.apiBaseUrl || '';
    
    // 打开协议页面
    wx.navigateTo({
      url: `/pages/webview/webview?url=${encodeURIComponent(`${baseUrl}/api/agreement/${type}/`)}&title=${type === 'user_agreement' ? '用户协议' : '隐私政策'}`
    });
  },
  
  // 微信登录
  wxLogin: function() {
    // 如果未同意协议，不允许登录
    if (!this.data.hasAgreed) {
      wx.showToast({
        title: '请阅读并同意用户协议和隐私政策',
        icon: 'none'
      });
      return;
    }
    
    const that = this;
    const app = getApp();
    
    this.setData({
      loading: true,
      loginMessage: '正在获取用户信息...'
    });
    
    // 直接调用获取用户信息接口
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途
      success: (profileRes) => {
        console.log('获取用户信息成功:', profileRes);
        
        // 立即保存微信返回的用户资料
        const wxUserInfo = profileRes.userInfo;
        wx.setStorageSync('wx_profile_info', wxUserInfo);
        
        // 确保本地缓存了微信用户的昵称和头像
        if (wxUserInfo.nickName) {
          wx.setStorageSync('wx_nickname', wxUserInfo.nickName);
        }
        if (wxUserInfo.avatarUrl) {
          wx.setStorageSync('wx_avatar', wxUserInfo.avatarUrl);
        }
        
        // 立即显示用户头像
        that.setData({
          userAvatar: wxUserInfo.avatarUrl,
          hasUserInfo: true,
          loginMessage: '正在登录...'
        });
        
        // 获取用户信息成功后，再调用登录接口
        that.processLoginWithUserInfo(wxUserInfo);
      },
      fail: (err) => {
        console.error('获取用户信息失败:', err);
        
        const errorMsg = err.errMsg || '获取用户信息失败';
        const isUserDenied = errorMsg.includes('auth deny');
        
        if (isUserDenied) {
          wx.showModal({
            title: '提示',
            content: '您已拒绝授权获取用户信息，将使用默认头像和昵称进行登录。您可以在登录后修改个人资料。',
            showCancel: false,
            success: () => {
              // 用户拒绝授权，使用默认用户信息继续登录
              console.log('用户拒绝授权，使用默认用户信息继续登录');
              
              // 尝试使用之前存储的用户信息
              let wxUserInfo = wx.getStorageSync('wx_profile_info');
              if (!wxUserInfo) {
                // 如果没有之前的信息，使用默认值
                wxUserInfo = {
                  nickName: '',
                  avatarUrl: '',
                  gender: 0
                };
              }
              
              that.setData({
                userAvatar: wxUserInfo.avatarUrl || '/assets/images/default-avatar.png',
                hasUserInfo: false,
                loginMessage: '正在登录(默认用户)...'
              });
              
              // 继续登录流程，但不带用户信息
              that.processLoginWithUserInfo(wxUserInfo);
            }
          });
        } else {
          // 其他错误
          wx.showToast({
            title: errorMsg.includes('auth deny') ? '已取消授权' : errorMsg,
            icon: 'none'
          });
          
          that.setData({
            loading: false,
            loginMessage: '请授权获取用户信息'
          });
        }
      }
    });
  },
  
  // 处理登录流程
  processLoginWithUserInfo: function(wxUserInfo) {
    const that = this;
    const app = getApp();
    
    // 获取微信登录code
    wx.login({
      success: (res) => {
        if (res.code) {
          console.log('微信登录成功，获取到code:', res.code);
          
          // 准备登录参数，只携带必要信息
          const loginParams = {
            code: res.code,
            userInfo: wxUserInfo
          };
          
          console.log('发送登录请求，携带code和userInfo');
          
          // 调用后端登录接口
          app.globalData.api.user.login(loginParams)
            .then(loginRes => {
              console.log('后端登录成功:', loginRes);
              
              // 确保用户信息中包含头像和昵称
              const userInfo = loginRes.user;
              
              // 设置全局用户信息
              app.globalData.userInfo = userInfo;
              
              // 检查本地购物车并同步到服务器
              that.syncLocalCartIfNeeded();
              
              // 提示登录成功
              wx.showToast({
                title: '登录成功',
                icon: 'success',
                duration: 1500
              });
              
              // 输出最终用户信息，用于调试
              console.log('最终使用的用户信息:', userInfo);
              
              // 登录成功后延迟一下再跳转，让用户看到成功提示
              setTimeout(() => {
                that.navigateBack();
              }, 1500);
            })
            .catch(err => {
              console.error('登录失败:', err);
              
              // 显示详细的错误信息
              let errorMsg = '登录失败，请重试';
              if (err && err.message) {
                errorMsg = err.message;
              }
              
              wx.showToast({
                title: errorMsg,
                icon: 'none',
                duration: 2000
              });
              
              that.setData({
                loading: false,
                loginMessage: errorMsg
              });
            });
        } else {
          console.error('微信登录失败:', res);
          wx.showToast({
            title: '微信登录失败',
            icon: 'none'
          });
          that.setData({
            loading: false,
            loginMessage: '微信登录失败，请重试'
          });
        }
      },
      fail: (err) => {
        console.error('调用wx.login失败:', err);
        
        const errorMsg = err.errMsg || '登录接口调用失败';
        
        wx.showToast({
          title: errorMsg,
          icon: 'none'
        });
        
        that.setData({
          loading: false,
          loginMessage: errorMsg
        });
      }
    });
  },
  
  // 同步本地购物车数据到服务器
  syncLocalCartIfNeeded: function() {
    // 引入购物车工具
    const cartUtils = require('../../utils/cartUtils');
    
    // 检查是否有本地购物车数据
    if (cartUtils.hasItemsInLocalCart()) {
      console.log('发现本地购物车数据，准备同步到服务器');
      
      // 显示同步中提示
      this.setData({
        loginMessage: '正在同步购物车数据...'
      });
      
      const app = getApp();
      
      // 同步购物车数据到服务器
      cartUtils.syncLocalCartToServer(app.globalData.api)
        .then(results => {
          console.log('本地购物车同步完成，同步项数:', results.length);
          this.setData({
            loginMessage: '购物车同步完成'
          });
        })
        .catch(err => {
          console.error('本地购物车同步失败:', err);
          // 同步失败不影响登录流程，仅记录错误
        });
    }
  },
  
  // 返回上一页或首页
  navigateBack: function() {
    const redirectUrl = this.data.redirectUrl;
    
    if (redirectUrl) {
      // 如果有重定向地址，则跳转到指定页面
      if (redirectUrl.startsWith('/pages/index/') || 
          redirectUrl.startsWith('/pages/category/') || 
          redirectUrl.startsWith('/pages/cart/') || 
          redirectUrl.startsWith('/pages/profile/')) {
        // TabBar页面使用switchTab
        wx.switchTab({
          url: redirectUrl
        });
      } else {
        // 非TabBar页面使用redirectTo
        wx.redirectTo({
          url: redirectUrl
        });
      }
    } else {
      // 没有重定向地址，则返回上一页
      const pages = getCurrentPages();
      if (pages.length > 1) {
        wx.navigateBack({
          delta: 1
        });
      } else {
        // 如果没有上一页，则跳转到首页
        wx.switchTab({
          url: '/pages/index/index'
        });
      }
    }
  },
  
  // 取消登录，返回上一页
  cancelLogin: function() {
    this.navigateBack();
  }
}); 